Linux(Ubuntu 20.04 LTS)之shell使用基础教程 |
您所在的位置:网站首页 › ubuntu shell脚本入门 › Linux(Ubuntu 20.04 LTS)之shell使用基础教程 |
Linux(Ubuntu 20.04 LTS)之shell使用基础教程
我在此使用的是VMware虚拟机安装的Ubuntu 20.04 LTS。
Shell是linux系统的用户界面。Shell即是一个命令解释器,它解释由用户输入的命令并且把它们送到内核去执行。又是一种程序设计语言,具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,允许用户编写由shell命令组成的程序。
在ubuntu系统桌面中按下Ctrl+Alt+T组合键,可打开shell(Terminal窗口),参见下图:
其中$是终端命令提示符 @和:是分隔符号,#或$是命令提示符,如果是超级用户(root 用户),提示符就是#;如果是普通用户,提示符就是$。 @前面是用户名,这里是wang @后至:之间是表示当前系统的主机名(计算机名),这里是wang-virtual-machine :至#或$之间是用户当前所在的目录,这里是~,~代表home 目录。
顺便指明,终端下默认的复制(copy)粘贴(viscidity,paste)快捷键是 Ctrl+Shift+C,Ctrl+Shift+V。 Linux中文件扩展名 windows里通过扩展名来区分文件类型的。linux里文件扩展名和文件类型没有关系。但为了容易区分和兼容用户使用windows的习惯,我们还是会用扩展名来表示文件类型。举例如下: ☆ 源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,创建命令一般为tar,gzip,zip等。 ☆ .sh表示shell脚本文件,通过shell语言开发的程序。 ☆ .pl表示perl语言文件,通过perl语言开发的程序。 ☆ .py表示python语言文件,通过python语言开发的程序。 ☆ .html、.htm、.php、.jsp、.do表示网页语言的文件。 ☆ .conf表示系统服务的配置文件。 ☆ .rpm表示rpm安装包文件。 linux下文件的一些文件颜色的含义 ☆绿色-->代表可执行文件,(绿色代表通行证的意思)呵呵 ☆红色-->代表压缩文件 ☆深蓝色-->代表目录 ☆浅蓝色-->代表链接文件 ☆灰色-->代表其它的一些文件
查看当前 Linux 的默认 Shell echo $SHELL
可以通过 cat /etc/shells 来查看 linux 支持的 shell。 ☆sh sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。 ☆bash 这是默认的 shell,,本教程也基于 bash 编写。bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。 在现代的 Linux 上,sh 已经被 bash 代替,bash是sh的增强版本。 ☆dash Debian Almquist Shell(dash),从NetBSD移植到Linux。Dash Shell 比 Bash Shell 小的多。 ☆rbash 受限shell是LinuxShell限制一些bash shell中的功能,该限制很好地实现了命令以及脚本在受限shell中运行。 它为Linux中的bash shell提供了一个额外的安全层。 Ubuntu 20.04 LTS之shell的切换 可以在shell解释器中直接输入shell名称进行切换 输入exit退出 参见下图:
在终端命令行界面中可以使用与文件管理相关的命令 root用户具有系统中的最高权限。由于Ubuntu系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端中输入如下命令: sudo passwd 或者sudo passwd root 输入当前登录电脑上的密码。然后设置root密码,重复密码。参见下图 提示:sudo是Ubuntu系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。
可以使用”sudo adduser 用户名”新建用户。
删除用户使用“userdel 用户名”命令,最好将它留在系统上的文件也删除掉,可以使用“userdel -r 用户名”来实现。
重新设置普通用户密码 passwd 用户名 重新设置root用户密码 sudo passwd root
详细查看Ubuntu版本号: lsb_release -a 参见下图:
简洁查看ubuntu版本 cat /etc/issue 注意cat后有空格,参见下图:
显示linux的内核版本和系统是多少位的:X86_64代表系统是64位的 uname -a 参见下图:
显示linux的内核版本和gcc编译器版本号及linux变种的版本 cat /proc/version 参见下图:
linux中cat是 concatenate 的缩写,此令用以将文件、标准输入内容打印至标准输出,常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S停止滚屏;Ctrl+QQ回复滚屏;Ctrl+C终止该命令,并回到Shell提示符状态。 还能查看系统信息。
查看当前工作目录命令pwd
新建目录(文件夹)命令mkdir 例如、在当前工作目录中新建子目录test mkdir test
列出文件夹下包含的文件信息命令ls
用cd命令进入/dev目录
列出文件的详细信息,如文件的类型、读写权限列表,创建者,创建时间,等,ls -l 其中drwxr-xr-x说明 第一个符号表明文件类型。在Linux系统中,一切皆文件。Linux系统中的文件类型: 文件类型 文件类型标识 普通文件 - 目录文件 d 块设备文件 b 字符设备文件 c 管道文件 p 套接字(socket)文件 s 符号链接文件 l 后面9位标明文件权限,第一个三位,是所有者(user)拥有的权限,接着3位代表的是组群(group)拥有的权限,最后3位代表其他人(other)拥有的权限。r 读权限read ,w 写权限write ,x 操作权限execute。
更改当前的工作目录命令cd 例如、更改当前的工作目录为 test cd test
删除文件或目录命令rm 例如、删除 test目录 rm -r test 例如、删除test01.c文件 rm test01.c
查看文件内容cat 例如、查看文件test01.c内容 cat test01.c
查看所有进程 ps -ef
实时显示进程状态 top 按ctrl+c可以退出显示进程状态
查看环境变量 Env
搜索文件 根据 文件或目录名称 搜索,格式如下: find : 所要搜索的目录及其所有子目录。默认为当前目录。 : 所要搜索的文件的特征。-name或者-iname 搜索字符,-name区分大小写,-iname一个不区分大小写。通配符*、?,*代表0至多个任意字符,?代表1个任意字符。 : 对搜索结果进行特定的处理。 如-ls 表示显示它们的详细信息, 如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件) 例如 find . -name "*.txt" -ls 搜索当前目录中,所有.txt的文件,并显示它们的详细信息。参见下图:
又如find . -name "*.txt" -size +100c 其中-size 大小描述 +n 表示大于,-n 表示小于,n 表示等于;c 表示字节,k表示千字节,M表示兆字节。
清屏 clear 清屏后,提示符移到左上角。
命令帮助的查看 按内置(builtin、内建)命令和非内置命令有所不同。可以使用type 命令名 分辨之: 如 type cd type su
内置(builtin、内建)命令帮助的查看: help 命令名 或 命令名 --help 如 help cd
非内置命令帮助的查看: 命令名 --help 如 su –help
【特别提示、对于非内置命令查看帮助,可用 命令名 --help,而用 help 命令名,无效果,参见下图: 】
压缩与解压 首先要了解两个基础概念 打包:将一堆文件或目录什么的变成一个总的文件。 压缩:将一个大的文件经过某种压缩算法变成一个小文件。 为什么要区分这两个概念呢?因为Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想要压缩一大堆文件时,首先需要打个包,然后压缩。 最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,该命令的基本格式为: tar [选项] 源文件或目录 常用选项及含义 选项 含义 -c 产生新的包。 -f 包名 指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名; -v 显示处理(打包)的过程; -u 更新原压缩包中的文件,仅将较新的文件附加到存档中; -r 向压缩归档文件末尾追加文件; 在使用 tar 命令指定选项时可以不在选项前面输入“-”。例如,使用“cvf”选项和 “-cvf”起到的作用一样。
当 tar 命令用于对 tar 包做解打包操作时,该命令的基本格式如下: tar [选项] 压缩包 解打包常用选项及含义 选项 含义 -x 对 tar 包做解打包操作。 -f 包名 指定要解压的 tar 包的包名。 -t 只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。 -C 目录 指定解打包位置。 -v 显示处理(解包)的过程。 例 tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思 tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思 tar -cvf ana.tar anaconda-ks.cfg /tmp/ 把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包。tar命令也可以打包多个文件或目录,只要用空格分开即可。 tar -xvf ana.tar 解打包到当前目录下。 tar -xvf ana.tar -C /tmp 把文件包ana.tar解打包到/tmp/目录下,如果想要指定解压位置,则需要使用 "-C(大写)" 选项。
Linux用户身份切换 在日常工作中,尽量使用普通用户账号操作,当需要root权限的时候再通过身份切换的方式切换至root管理员,这样能保证系统的安全性。使用普通账号的安全性主要体现在两个方面: 防止因误操作而删除了系统重要文件; 创建一些系统账户专门用来启动某些服务,这样即使该服务被攻陷,系统仍然是安全的。 方式一:su 该命令可以将身份切换至指定账户,但需要输入该账户的密码。 命令格式 su [-lm] [-c 命令] username 若不加username则表示切换至root 使用su和su -均能切换至root账户,但不加-会使很多变量仍然保持切换前用户的变量,而加了-之后则参数将会完全变成root的参数,尤其是环境变量PATH,从而能够直接使用某些命令,而无需指定绝对路径。 若只想执行一个root权限才能执行的命令的时候,可以将命令直接写在-c的后面,这样无需切换身份,如: su -c vim /etc/shadow
方式二:sudo 使用su切换身份需要直到root账号的密码,这样并不安全。为了提高安全性,我们可以使用sudo来执行需要root权限的功能。 sudo由root指定,指定后用户只需输入自己账号的密码就能申请到root权限,而无需告诉任何人root密码,因此安全了不少。 命令格式 sudo [-b] [-u username] 需要执行的命令 -b:使后续的命令自行执行,而不与目前的shell产生影响。
shell脚本编程 注释符号# 放在需注释内容的前面。注意#!不要和混淆,#!用于指明脚本的解释器程序的路径,如#!/bin/bash、#!/bin/sh。 Shell变量 Linux Shell中的变量分为用户自定义变量,环境变量,位置参数变量和预定义变量。可以通过set命令查看系统中存在的所有变量。 返回变量 ${变量名} 删除变量用 unset 变量名 shell中默认把变量值当作字符串 age=19 age=${age}+1 echo ${age} 输出结果为19+1,而不是20,因为shell将其解释为字符串,而不是数学运算。参见下图:
可以用let命令使其进行数学运算,例如: age2=19 let age2=${age2}+1 echo ${age2} 参见下图:
也可以用declare把变量定义为整型。例如: declare -i age3=25 age3=${age3}+1 echo ${age3} 这里就用 -i 选项把age定义为整型的了。参见下图:
在shell中可以使用数组,例如: array[0]=0 array[1]=1 array[2]=2 则array就是一个数组,也可以这样给数组初始化: array=(0 1 2) 元素之间以空格分隔。 可以通过 ${array[$i]}来访问array中某个元素,${array[*]} 的返回值即数组的所有元素组成的串,${#array[*]} 的返回值即数组的元素个数,${array[*]:0:2} 返回第一个和第二个元素组成的串。0表示开始的位置,2表示要返回的元素个数,开始位置可以为0-2(0减去2)之类的,表示从倒数第二个元素开始。
Shell脚本通常都是以.sh 为后缀名的 编写一个Shell脚本文件,内容如下 #!/bin/bash for ((i=0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |